GValue *value,
GParamSpec *pspec);
static void gtk_menu_finalize (GObject *object);
+static void gtk_menu_dispose (GObject *object);
static void gtk_menu_destroy (GtkWidget *widget);
static void gtk_menu_realize (GtkWidget *widget);
static void gtk_menu_unrealize (GtkWidget *widget);
return gtk_container_get_children (GTK_CONTAINER (priv->box));
}
+static void
+gtk_menu_forall (GtkContainer *container,
+ GtkCallback callback,
+ gpointer data)
+{
+ GtkMenuPrivate *priv = GTK_MENU (container)->priv;
+
+ if (priv->box)
+ gtk_container_forall (GTK_CONTAINER (priv->box), callback, data);
+}
+
static void
gtk_menu_class_init (GtkMenuClass *class)
{
gobject_class->set_property = gtk_menu_set_property;
gobject_class->get_property = gtk_menu_get_property;
gobject_class->finalize = gtk_menu_finalize;
+ gobject_class->dispose = gtk_menu_dispose;
widget_class->destroy = gtk_menu_destroy;
widget_class->realize = gtk_menu_realize;
container_class->add = gtk_menu_add;
container_class->remove = gtk_menu_remove;
+ container_class->forall = gtk_menu_forall;
menu_shell_class->submenu_placement = GTK_LEFT_RIGHT;
menu_shell_class->deactivate = gtk_menu_deactivate;
static void
gtk_menu_finalize (GObject *object)
+{
+ G_OBJECT_CLASS (gtk_menu_parent_class)->finalize (object);
+}
+
+static void
+gtk_menu_dispose (GObject *object)
{
GtkMenu *menu = GTK_MENU (object);
GtkMenuPrivate *priv = menu->priv;
g_clear_pointer (&priv->swin, gtk_widget_unparent);
+ priv->box = NULL;
- G_OBJECT_CLASS (gtk_menu_parent_class)->finalize (object);
+ G_OBJECT_CLASS (gtk_menu_parent_class)->dispose (object);
}
static void
return gtk_container_get_children (GTK_CONTAINER (menu_bar->box));
}
+static void
+gtk_menu_bar_finalize (GObject *object)
+{
+ G_OBJECT_CLASS (gtk_menu_bar_parent_class)->finalize (object);
+}
+
+static void
+gtk_menu_bar_dispose (GObject *object)
+{
+ GtkMenuBar *menu_bar = GTK_MENU_BAR (object);
+
+ g_clear_pointer (&menu_bar->box, gtk_widget_unparent);
+
+ G_OBJECT_CLASS (gtk_menu_bar_parent_class)->dispose (object);
+}
+
+static void
+gtk_menu_bar_forall (GtkContainer *container,
+ GtkCallback callback,
+ gpointer data)
+{
+ GtkMenuBar *menu_bar = GTK_MENU_BAR (container);
+
+ if (menu_bar->box)
+ gtk_container_forall (GTK_CONTAINER (menu_bar->box), callback, data);
+}
+
static void
gtk_menu_bar_class_init (GtkMenuBarClass *class)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
GtkContainerClass *container_class = GTK_CONTAINER_CLASS (class);
GtkMenuShellClass *menu_shell_class = GTK_MENU_SHELL_CLASS (class);
GtkBindingSet *binding_set;
+ object_class->finalize = gtk_menu_bar_finalize;
+ object_class->dispose = gtk_menu_bar_dispose;
+
widget_class->measure = gtk_menu_bar_measure;
widget_class->size_allocate = gtk_menu_bar_size_allocate;
widget_class->root = gtk_menu_bar_root;
container_class->add = gtk_menu_bar_add;
container_class->remove = gtk_menu_bar_remove;
+ container_class->forall = gtk_menu_bar_forall;
menu_shell_class->insert = gtk_menu_bar_insert;
menu_shell_class->submenu_placement = GTK_TOP_BOTTOM;